﻿// 4 Values whose Sum is 0 POJ - 2785.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;
//https://vjudge.csgrandeur.cn/problem/POJ-2785

/*
SUM 问题可表述如下：给定四个整数值列表 A、B、C、D，计算有多少个四元组（a、b、c、d ）∈ A x B x C x D 使得 a + b + c + d = 0 。
下面我们假设所有列表的大小 n 相同。
输入
输入文件的第一行包含列表 n 的大小（该值可大至 4000）。然后是 n 行，分别包含 A、B、C 和 D 的四个整数值（绝对值可大至 228）。

in
6
-45 22 42 -16
-41 -27 56 30
-36 53 -37 77
-36 30 -75 -46
26 -38 -10 62
-32 -54 -6 45

out
5


提示
示例解释： 事实上，下列五个四元数的和为零：（-45，-27，42，30），（26，30，-10，-46），（-32，22，56，-46），
（-32，30，-75，77），（-32，-54，56，30）。
*/

const int N = 4010;
int A[N], B[N], C[N], D[N];
int n;
int sumAB[N * N]; int idx;

int BSearch(int x) {
	int l = 0; int r = idx - 1;
	while (l < r) {
		int mid = l + r >> 1;
		if (sumAB[mid] >= x) {
			r = mid;
		}
		else {
			l = mid + 1;
		}
	} 
	int ll = l;

	l = 0;  r = idx - 1;
	while (l < r) {
		int mid = (l + r + 1) >> 1;
		if (sumAB[mid] <= x) {
			l = mid;
		}
		else {
			r = mid - 1;
		}
	}

	if (sumAB[ll] != x) return 0;

	return l - ll + 1;
}

int main()
{
	scanf("%d",&n);
	for (int i = 0; i < n; i++) {
		scanf("%d%d%d%d",&A[i],&B[i],&C[i],&D[i]);
	}

	for (int i = 0; i < n; i++) {
		for (int j = 0; j < n; j++) {
			sumAB[idx++] = A[i] + B[j];
		}
	}

	sort(sumAB, sumAB + idx);

	int cnt = 0;
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < n; j++) {
			int find = 0 - (C[i] + D[j]);
			int searchN = BSearch(find);
			cnt += searchN;;
		}
	}

	cout << cnt << endl;
	 
	return 0;
}
 